package net.realsee.service.wcs.work;

import com.baomidou.mybatisplus.extension.service.IService;
import net.realsee.domain.wcs.work.WcsOrderHeader;
import net.realsee.domain.wcs.work.bo.WcsOrderHeaderBo;
import net.realsee.domain.wcs.work.vo.WcsOrderHeaderVo;
import net.realsee.framework.core.domain.PageQuery;
import net.realsee.framework.core.page.TableDataInfo;

import java.util.Collection;
import java.util.List;

/**
 * 单据头Service接口
 *
 * @author realsee
 * @date 2023-08-11
 */
public interface IWcsOrderHeaderService extends IService<WcsOrderHeader> {

    /**
     * 查询单据头
     */
    WcsOrderHeaderVo selectVoById(Long id);

    /**
     * 查询单据头列表
     */
    TableDataInfo<WcsOrderHeaderVo> selectVoPage(WcsOrderHeaderBo bo, PageQuery pageQuery);

    /**
     * 查询单据头列表
     */
    List<WcsOrderHeaderVo> selectVoList(WcsOrderHeaderBo bo);

    /**
     * 新增单据头
     */
    Boolean insertByBo(WcsOrderHeaderBo bo);

    /**
     * 修改单据头
     */
    Boolean updateByBo(WcsOrderHeaderBo bo);

    /**
     * 校验并批量删除单据头信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids);

    /**
     * 通过订单号和订单类型查询
     */
    WcsOrderHeader getByOrderNoAndOrderType(String orderNo, Long orderType);

    boolean cancel(String orderNo);

    /**
     * 查询出处于等待点位上的任务集合
     */
    List<WcsOrderHeader> listWaitingTask();

    /**
     * 任务是否已经完结
     */
    boolean taskIsFinished(String taskCode);
}
